[アップデート] AWS Elemental MediaLiveでライブチャンネルのJPEG出力機能が追加されました!
はじめに
清水です。AWS Media Servicesの細かなアップデートを追っていくコーナーです。本エントリで紹介するのはこちら、AWS Elemental MediaLiveでJPEG出力機能が追加されました。
- AWS Elemental MediaLive Adds I-Frame-Only HLS Manifests and JPEG Outputs
- AWS Elemental MediaLive に I フレームのみの HLS マニフェストと JPEG 出力を追加
先日、2019/01/25にポストされた内容ですね。上記ポストでは2つの項目を紹介していますが、本エントリではJPEG出力機能のみを取り上げます。
動画配信を行う際に「配信している映像を画像ファイルで取得したい」ということはよくあるケースかと思います。例えばDVR再生時にシークバーにカーソルをあわせたらサムネイル画像を表示するため、また画像ベースで認識、分析処理を行うため、などがあるのではないでしょうか。ライブ配信を行いながらこのような画像を生成するには、これまでだとMediaLiveで出力したtsファイルをMediaConvertで変換する、などの必要がありました。システムとして作り込めば自動化は可能ですが、これがMediaLiveの標準機能として搭載されたのは嬉しいですね!
AWS Elemental MediaLiveでライブ映像をJPEG出力してみた
では実際にAWS Elemental MediaLiveのJPEG出力機能を使ってライブ配信している映像を画像ファイルで取得してみます。Create channelの画面でOutput groupsを追加しようとすると「Frame capture」の項目が確認できますね!
次の画面では出力先などを設定します。出力先はS3となりますので、s3ssl://[出力先バケット名]/[パスとファイル名の一部]の形式で、Destinationの箇所に入力します。
続いてOutputの詳細設定を行います。Output 1のSettingsから、Name Modifierと取得する画像の解像度など詳細設定が行えます。Name Modifiert部分にはファイル名の一部を入力します。ファイル名の命名規則としては、[Destinationに入力したファイル名部分]+[Name Modifierで指定した文字列]+[.]+[00000から始まる5桁のシーケンシャル番号]+[拡張子(.jpg)]となります。(参考: About Frame Capture Locations and File Names - AWS Elemental MediaLive)またFrame capture設定内で複数のOutputが指定できるので、例えば異なる解像度の画像を取得するということもできます。Name Modifierはその際の識別子になりますね。(例えば高解像度の出力設定には_high
、低解像度の出力設定には_low
などとすることができます。)
Stream settingsのWidth、Height、Capture Intervalも設定します。画像の取得間隔は最小の1
秒間隔ごととしました。
JPEG出力(Frame capture)の設定後、他のOutput groupについても設定しChannelを作成します。なおFrame captureのみでChannelを作成しようとすると下記のようなエラーが発生しますのでご注意ください。
例えば下記のようにHLS Outputを追加するとChannelが作成できました。
Channel作成後、Channelをスタートさせライブ配信を行ってみましょう。ライブ配信と同時に、以下のようにS3に映像と同じものが画像として出力されました!
まとめ
AWS Elemental MediaLiveの機能アップデート、ライブチャンネルのJPEG出力機能について確認してみました。冒頭にも記載しましたが、これまでMediaConvert連携などを考えないといけないなど、ライブ配信動画の画像生成にはひと手間かかっていましたが、これがMediaLiveの機能だけで完結できるのは非常に嬉しいですね!かゆいところに手が届いたすてきなアップデートだと思いました。引き続きAWS Elemental MediaLiveをはじめとしたAWS Media Servicesの機能アップデートに注目していきたいと思います。